package br.com.montezuma.empresarial.models;


import java.util.ArrayList;  
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Column; 
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;

import br.com.caelum.vraptor.Resource;


/**
 * <pre>
 * @author : Vitor Barroso
 * Purpose :  Representation of Empresa.
 * Amendment History                                                                
 * Date -                          
 * 27/05/2012 - Vitor Barroso - initial version.
 * 
 * Copyright 2012 Montezuma Software
 * </pre>
 */
@Resource
@Entity
public class Empresa implements IListagem{
	@Id
	@GeneratedValue
	private Long id;
	
	@Column(length=100,nullable=false)
	private String razaosocial;
	
	@Column(length=50,nullable=false)
	private String cnpj;
	
	@ManyToOne(cascade={CascadeType.PERSIST,CascadeType.MERGE,CascadeType.REFRESH})
	@JoinColumn(name="tipocontrato_id", referencedColumnName="id")
	private TipoContrato tipocontrato;
	
	@ManyToOne(cascade={CascadeType.PERSIST,CascadeType.MERGE,CascadeType.REFRESH})
	@JoinColumn(name="atividadeempresarial_id", referencedColumnName="id")
	private AtividadeEmpresarial atividadeempresarial;
	
	@Column(length=12,nullable=false)
	private Integer qntdefuncionarios;
	
	@Column(length=12,nullable=false)
	private Integer qntdecomputadores;
	
	@Column(length=12,nullable=false)
	private Integer qntdefiliais;

	@Column(length=15,nullable=false)
	private String telefone;
	
	@Column(length=100,nullable=false)
	private String paginaweb;
	
/*	@ManyToOne(cascade={CascadeType.PERSIST,CascadeType.MERGE,CascadeType.REFRESH})
	@JoinColumn(name="contato_id", referencedColumnName="id")
	private Contato contato;
*/
	
	
	
	
	
	
/**
	 * @return the id
	 */
	public Long getId() {
		return id;
	}


	/**
	 * @param id the id to set
	 */
	public void setId(Long id) {
		this.id = id;
	}


	/**
	 * @return the razaosocial
	 */
	public String getRazaosocial() {
		return razaosocial;
	}


	/**
	 * @param razaosocial the razaosocial to set
	 */
	public void setRazaosocial(String razaosocial) {
		this.razaosocial = razaosocial;
	}


	/**
	 * @return the cnpj
	 */
	public String getCnpj() {
		return cnpj;
	}


	/**
	 * @param cnpj the cnpj to set
	 */
	public void setCnpj(String cnpj) {
		this.cnpj = cnpj;
	}


	/**
	 * @return the tipocontrato
	 */
	public TipoContrato getTipocontrato() {
		return tipocontrato;
	}


	/**
	 * @param tipocontrato the tipocontrato to set
	 */
	public void setTipocontrato(TipoContrato tipocontrato) {
		this.tipocontrato = tipocontrato;
	}


	/**
	 * @return the atividadeempresarial
	 */
	public AtividadeEmpresarial getAtividadeempresarial() {
		return atividadeempresarial;
	}


	/**
	 * @param atividadeempresarial the atividadeempresarial to set
	 */
	public void setAtividadeempresarial(AtividadeEmpresarial atividadeempresarial) {
		this.atividadeempresarial = atividadeempresarial;
	}




	/**
	 * @return the telefone
	 */
	public String getTelefone() {
		return telefone;
	}


	/**
	 * @param telefone the telefone to set
	 */
	public void setTelefone(String telefone) {
		this.telefone = telefone;
	}


	/**
	 * @return the paginaweb
	 */
	public String getPaginaweb() {
		return paginaweb;
	}


	/**
	 * @param paginaweb the paginaweb to set
	 */
	public void setPaginaweb(String paginaweb) {
		this.paginaweb = paginaweb;
	}


//	/**
//	 * @return the contato
//	 */
//	public Contato getContato() {
//		return contato;
//	}

	

	/**
	 * @return the qntdefuncionarios
	 */
	public Integer getQntdefuncionarios() {
		return qntdefuncionarios;
	}


	/**
	 * @param qntdefuncionarios the qntdefuncionarios to set
	 */
	public void setQntdefuncionarios(Integer qntdefuncionarios) {
		this.qntdefuncionarios = qntdefuncionarios;
	}


	/**
	 * @return the qntdecomputadores
	 */
	public Integer getQntdecomputadores() {
		return qntdecomputadores;
	}


	/**
	 * @param qntdecomputadores the qntdecomputadores to set
	 */
	public void setQntdecomputadores(Integer qntdecomputadores) {
		this.qntdecomputadores = qntdecomputadores;
	}


	/**
	 * @return the qntdefiliais
	 */
	public Integer getQntdefiliais() {
		return qntdefiliais;
	}


	/**
	 * @param qntdefiliais the qntdefiliais to set
	 */
	public void setQntdefiliais(Integer qntdefiliais) {
		this.qntdefiliais = qntdefiliais;
	}


//	/**
//	 * @param contato the contato to set
//	 */
//	public void setContato(Contato contato) {
//		this.contato = contato;
//	}


public List<String> getColumns() {
		
		List <String> columns = new ArrayList<String>();
		columns.add("Id");
		columns.add("Razao Social");
		columns.add("CNPJ");
		columns.add("Telefone");
		
		return columns;
	}
	
	
	public List<String> getValues() {
		
		List <String> columns = new ArrayList<String>();
		columns.add(String.valueOf(this.getId()));
		columns.add(String.valueOf(this.getRazaosocial()));
		columns.add(String.valueOf(this.getCnpj()));
		columns.add(String.valueOf(this.getTelefone()));
		
		return columns;
	}
	
	
	public String getIdColumnName() {
		
		return "id";
	}
	
	public String getIdValue() {
		
		return String.valueOf(this.id);
	}

	
	public List<Class> getColumnsClass() {
		
		List <Class> columns = new ArrayList<Class>();
		columns.add(Long.class);
		columns.add(String.class);
		columns.add(String.class);
		columns.add(String.class);
		
		return columns;
	}	
}